package net.cl.support.ibatis;

//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.caol.web.Paging;
//import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;


/**
 * 提供基本的增,删,查,改及分页方法<br>
 * 如有特殊需求可以继承该类重写该类的方法
 * 
 * @author caol
 * 
 */
public class BaseDao {

//	private String getNamespace(Object obj) {
//		if (obj == null)
//			return "";
//		String fullPath = obj.getClass().getName();
//		if (fullPath.contains("beans")) {
//			fullPath = fullPath.substring(0, fullPath.indexOf("beans") - 1);
//			if (fullPath.lastIndexOf(".") > -1)
//				return fullPath.substring(fullPath.lastIndexOf(".") + 1) + ".";
//			return fullPath + ".";
//		}
//		return "";
//	}
//
//	private String getClassName(Object obj) {
//		if (obj == null)
//			return "";
//		return obj.getClass().getSimpleName();
//	}
//
//	private String getSqlMapStatementName(Object obj, String para) {
//		if (para == null)
//			throw new IllegalArgumentException("The para must not be null");
//		StringBuilder sb = new StringBuilder();
//		return sb.append(getNamespace(obj)).append(para).append(getClassName(obj)).toString();
//	}
//
//	/**
//	 * 对应数据库的insert方法
//	 * 
//	 * @param obj
//	 *            新增对象
//	 * @return 新增对象主键
//	 */
//	public int create(Object obj) {
//		Integer result = (Integer) getSqlMapClientTemplate().insert(getSqlMapStatementName(obj, "create"), obj);
//		return result.intValue();
//	}
//
//	/**
//	 * 对应数据库的delete方法
//	 * 
//	 * @param obj
//	 *            要删除的对象
//	 * @return 删除的数量
//	 */
//	public int delete(Object obj) {
//		Integer result = (Integer) getSqlMapClientTemplate().delete(getSqlMapStatementName(obj, "delete"), obj);
//		return result.intValue();
//	}
//
//	/**
//	 * 对应数据库的update方法
//	 * 
//	 * @param obj
//	 *            要更新的对象
//	 * @return 更新的数量
//	 */
//	public int update(Object obj) {
//		Integer result = (Integer) getSqlMapClientTemplate().update(getSqlMapStatementName(obj, "update"), obj);
//		return result.intValue();
//	}
//
//	/**
//	 * 对应数据库的select方法<br>
//	 * 查找数据库的中的一个对象
//	 * 
//	 * @param obj
//	 *            要查找的对象
//	 * @return 数据库中的对象
//	 */
//	public Object retrieve(Object obj) {
//		return getSqlMapClientTemplate().queryForObject(getSqlMapStatementName(obj, "retrieve"), obj);
//	}
//
//	/**
//	 * 对应数据库的select方法<br>
//	 * 查找数据库的中的对象集合
//	 * 
//	 * @param map查询条件
//	 * @param paging
//	 * @param obj
//	 * @return 数据库中的对象集合
//	 */
//	public List<?> pagingList(Map<String, Object> map, Paging paging, Object obj) {
//		if (map == null)
//			map = new HashMap<String, Object>();
//		map.put("start_row", paging.getStartRow());
//		map.put("end_row", paging.getPageSize());
//		if (map.get("orderBy") == null)
//			map.put("orderBy", "id");
//		if (map.get("order") == null)
//			map.put("order", "desc");
//		return (List<?>) getSqlMapClientTemplate().queryForList(getSqlMapStatementName(obj, "list_"), map);
//	}
//
//	/**
//	 * 查找数据库的中的对象数量
//	 * 
//	 * @param map
//	 * @param obj
//	 * @return 对象数量
//	 */
//	public int pagingCount(Map<String, Object> map, Object obj) {
//		if (map == null)
//			map = new HashMap<String, Object>();
//		Integer result = (Integer) getSqlMapClientTemplate().queryForObject(getSqlMapStatementName(obj, "count_"), map);
//		return result.intValue();
//	}
}
